/**
 * Created by wuyunan on 2017/5/9.
 */

import React, { Component } from "react";

class JsonUtil {
  /*
   * 字符转换为JSON
   * */
  static strToJson(data) {
    return this.isJson(data) ? data : JSON.parse(data);
  }

  // 判断obj是否为json对象
  static isJson(obj) {
    const isjson = typeof obj === "object" && Object.prototype.toString.call(obj).toLowerCase() === "[object object]" && !obj.length;
    return isjson;
  }
  /*
   * JSON转换为字符
   * */
  static jsonToStr(data) {
    return JSON.stringify(data);
  }
  /*
   * map转换为json
   * */
  static mapToJson(map) {
    return JSON.stringify(JsonUtil.strMapToObj(map));
  }
  /*
   * json转换为map
   * */
  static jsonToMap(jsonStr) {
    return JsonUtil.objToStrMap(JSON.parse(jsonStr));
  }
  /*
   * map转化为对象（map所有键都是字符串，可以将其转换为对象）
   * */
  static strMapToObj(strMap) {
    const obj = Object.create(null);
    for (const [k, v] of strMap) {
      obj[k] = v;
    }
    return obj;
  }
  /*
   * 对象转换为Map
   * */
  static objToStrMap(obj) {
    const strMap = new Map();
    for (const k of Object.keys(obj)) {
      strMap.set(k, obj[k]);
    }
    return strMap;
  }
}

export default JsonUtil;
